using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace Scenario_Editor.WR2TerrainLoader
{
    class Light
    {
        int     keineAhnung;
        float   blinkSize;
        float   blinkOffset;
        float   blinkDuaration;
        int     color;  // RGBA
        short   keineAhnung2;
        short   keineAhnung3;
        float   cosinus;
        float   orientationY;
        float   sinus;
        int     keineAhnung4;
        int     keineAhnung5;
        float   keineAhnung6; // float 1;
        float   keineAhnung7; // float 0:
        int     keineAhnung8;
        float   sinus2;
        int     keineAhnung9;
        float   cosinus2;
        int     keineAhnung10;
        float   positionX;
        float   positionY;
        float   positionZ;
        int     keineAhnung11;

        internal static Light FromStream(BinaryReader br)
        {
            Light light = new Light();
            light.keineAhnung = br.ReadInt32();
            light.blinkSize = br.ReadSingle();
            light.blinkOffset = br.ReadSingle();
            light.blinkDuaration = br.ReadSingle();
            light.color = br.ReadInt32();  // RGBA
            light.keineAhnung2 = br.ReadInt16();
            light.keineAhnung3 = br.ReadInt16();
            light.cosinus = br.ReadSingle();
            light.orientationY = br.ReadSingle();
            light.sinus = br.ReadSingle();
            light.keineAhnung4 = br.ReadInt32();
            light.keineAhnung5 = br.ReadInt32();
            light.keineAhnung6 = br.ReadSingle(); // float 1;
            light.keineAhnung7 = br.ReadSingle(); // float 0:
            light.keineAhnung8 = br.ReadInt32();
            light.sinus2 = br.ReadSingle();
            light.keineAhnung9 = br.ReadInt32();
            light.cosinus2 = br.ReadSingle();
            light.keineAhnung10 = br.ReadInt32();
            light.positionX = br.ReadSingle();
            light.positionY = br.ReadSingle();
            light.positionZ = br.ReadSingle();
            light.keineAhnung11 = br.ReadInt32();
            return light;
        }

        internal void Save(BinaryWriter bw)
        {

            bw.Write(this.keineAhnung);  //light.keineAhnung = br.ReadInt32();
            bw.Write(this.blinkSize);//light.blinkSize = br.ReadSingle();
            bw.Write(this.blinkOffset);//light.blinkOffset = br.ReadSingle();
            bw.Write(this.blinkDuaration);//light.blinkDuaration = br.ReadSingle();
            bw.Write(this.color);//light.color = br.ReadInt32();  // RGBA
            bw.Write(this.keineAhnung2);//light.keineAhnung2 = br.ReadInt16();
            bw.Write(this.keineAhnung3);//light.keineAhnung3 = br.ReadInt16();
            bw.Write(this.cosinus);   //light.cosinus = br.ReadSingle();
            bw.Write(this.orientationY);//light.orientationY = br.ReadSingle();
            bw.Write(this.sinus);  //light.sinus = br.ReadSingle();
            bw.Write(this.keineAhnung4); //light.keineAhnung4 = br.ReadInt32();
            bw.Write(this.keineAhnung5);//light.keineAhnung5 = br.ReadInt32();
            bw.Write(this.keineAhnung6); //light.keineAhnung6 = br.ReadSingle(); // float 1;
            bw.Write(this.keineAhnung7);   //light.keineAhnung7 = br.ReadSingle(); // float 0:
            bw.Write(this.keineAhnung8);//light.keineAhnung8 = br.ReadInt32();
            bw.Write(this.sinus2);   //light.sinus2 = br.ReadSingle();
            bw.Write(this.keineAhnung9);  //light.keineAhnung9 = br.ReadInt32();
            bw.Write(this.cosinus2); //light.cosinus2 = br.ReadSingle();
            bw.Write(this.keineAhnung10);//light.keineAhnung10 = br.ReadInt32();
            bw.Write(this.positionX); //light.positionX = br.ReadSingle();
            bw.Write(this.positionY); //light.positionY = br.ReadSingle();
            bw.Write(this.positionZ);//light.positionZ = br.ReadSingle();
            bw.Write(this.keineAhnung11); //light.keineAhnung11 = br.ReadInt32();
        }
    }
}
